1 Background

A survey of the seamounts south of Tasmania on board of the Australian Marine National Facility Vessel Investigator imagery of the seafloor was collected on transects using a towed camera system. The imagery consist of Video and stereo still images. The data is structured into seamounts (Map Locations), transects (operations) and images that are geolocated in space. A selection of the stereo stills are processed to generate a quadrat of measured size overlaid on the image. The area within quadrats is annotated for (1) percent cover of substrate types with the matrix-forming coral (esp. Solenosmilia variabilis) being of particular interest, and for (2) counts of individuals of indicator taxa for ‘VME’ (Vulnerable Marine Ecosystems).

Plate 1 Example images of the habitats

Plate 1 Example images of the habitats

2 Image annotations

2.1 1. Percent cover annotations

Percent cover of substrate types is annotated using a point count approach in TransectMeasure software from SEAGIS. Random points at a density of 5 points.m-2) were thrown into the measured quadrat and annotated for 16 categories, including 3 matrix-forming coral species distinguished into live vs. dead, 4 other biogenic substrates, 5 non-biogenic substrate types and a not-scorable’ category where no category could be assigned due to image limitation or obstruction by mobile fauna. The CATAMI classification (Althaus et al. 2015) was used to define the substrate categories. Descriptive codes were used for each category for ease of data manipulation.In addition to the annotations of the random points an overall classification of the whole quadrat was applied to capture the overall impression, especially with regard to potential past fishing impact.

Codes and descriptions of the point categories used:

  • SC-ENLP: Cnidaria - Stony corals - Enalopsammia (live)
  • SC-SOL: Cnidaria - Stony corals - Solenosmilia (live)
  • SC-MAD: Cnidaria - Stony corals - Madrepora (live)
  • SU-ENLP: Cnidaria - Stony corals - Enalopsammia (dead)
  • SU-SOL: Cnidaria - Stony corals - Solenosmilia (dead)
  • SU-MAD: Cnidaria - Stony corals - Madrepora (dead)
  • SU-BCOR: Unconsolidate - Biogenic - Coral Rubble
  • SU-BBAR: Unconsolidate - Biogenic - Barnacle plates
  • SU-BOTH: Unconsolidate - Biogenic - other
  • SU-CONBIO: Consolidate - Biogenic - other (note this substrate types was not consistentlly recorded combine with xxx)
  • SU-ROK: Consolidate - Rock
  • SU-BOL: Consolidate - Boulder
  • SU-COB: Consolidate - Cobbles
  • SU-PEBGRAV: Unconsolidate - Pebble - gravel
  • SU-SAMU: Unconsolidate - Sand/mud
  • NS: Unscorable

2.2 2. VME taxa counts

Counts of indicator taxa for vulnerable marine ecosystems (VME) are made within each quadrat, allowing for calculating standardised densities per square metre. In addition, by-eye estimated of the percent cover of coral matrix (dead & alive combined) are recorded for the three types of matrix forming coral distinguished for percent cover annotations, in order to compare percent cover from point counts and estimates. Annotations are made in the CSIRO insidence of the MBARI developed Video Annotation and Registration System (VARS). The VME taxa targetted are listed below. Again, the CATAMI classification (Althaus et al. 2015) was used to classify the taxa. The comments field in VARS is used to record counts and to record additional modifyiers such as colour of distinctive taxa within some of the VME taxon groups (e.g. yellow and brown stalked crinoids were distinguished). An additional category of ‘No-VMEfauna’ was added to indicate that an image was annotated but none of the taxa of interest were observed.

VME taxa targetted:

  • Sponges
  • Stony corals: Branching: S.variabilis
  • Stony corals: Branching: Enalopsammia
  • Stony corals: Branching: Madrepora
  • stony corals (other)
  • Black & Octocorals
  • Stalked crinoids
  • Unstalked crinoid
  • Brisingid
  • True Anemones: Fourlobed
  • Hydrocorals: Branching
  • Hydrocorals (presence only recorded)

Additional taxa of interest:

  • Regular urchins
  • Dermechinus horridus (a regular urchin)
  • Irregular urchins

Percent cover of matrix forming coral (dead & alive), by-eye estimate:

  • PC_Sub_CoralReef: Coral reef species undetermined
  • PC_Cub_EnallopMatrix: Enallopsammia matrix
  • PC_Sub_SolMatrix: Solenosmilia matrix

3 Data preparation and cleaning

3.1 1. Percent cover data

The TM raw output data set is a concatenation of all TM project outputs. Each of the output files consist of the point annotations within images and the ‘user defined’ point annotation for the entire image. The raw data extract is tidied up using the separate R script Tidy_TM_Concat_data.R. This separates the raw data into overview annotations and point annotations and transformed into percent cover by substrate category for each image. Then the latter are linked to image geolocation information and written out to .cvs as column-format data (PCcover.csv) and as matrix format (PCcoverbyImage.csv), for use in further analyses and for mapping in QGIS.

Note, at this stage the overview annotations were separated out from percent cover data but are not furher cleand or considered.

3.2 2. VME taxa counts

The VME taxon counts are extracted from the VARS Oracle data base using the script VARS_2018-StillsAnnoExtracts.sql or VARS_2018-StillsAnnoExtracts_V2.sql. The raw data extract is tidied up using the separate R script VME_anno_tidy.R or VME_anno_tidy_Version2.R. The difference between the versions is that the original extracts only dta where a quadrat is in VARS, the latter extracts that for the ‘port’ images thus including annotations made where the qudrat was not read into VARS. The non-numrical comments are separated from the counts and percent covers; these are currently not further used. The numeric data is split into percent cover data and the counts. The latter are linked to the quadrat sizes and converted to densities (ind.m-2). each of the tables is linked to image geolocation information and written out to .cvs as column-format data (VMEanno_PCcoral.csv and VMEanno_DensQ.csv) and combined as matrix format (VMEannoMatrix.csv), for use in further analyses and for mapping in QGIS.

Note, at this stage the modifyiers (colour, etc) are not incorporated into the output data.

4 Data exploration

Inital data summaries and plots based on the by image operations details and the five .csv files written out by the data cleaning process.

# read all stills data and make depth numeric

AllSTills <- read_csv("data/IN2018_V06_AllStills.csv") %>% 
  mutate(depth=as.numeric(Z)) %>% 
  select(-c(Z))

PCcoverbyImage <- read_csv("Results/PCcoverbyImage.csv")
PC_cover <- read_csv("Results/PCcover.csv")

VMEanno_DensQ <- read_csv("Results/VMEanno_DensQ.csv")
VMEanno_PCcoral <- read_csv("Results/VMEanno_PCcoral.csv")
VMEannoMatrix <- read_csv("Results/VMEannoMatrix.csv")


# summary not presented in Table but handy to have code identifying all images selected together with selection number
SelectedStlls <- AllSTills %>% 
  filter(`Selection round (1 orig sel, 2 replacement)` == 1 |
           `Selection round (1 orig sel, 2 replacement)` == 2 |
           `Selection round (1 orig sel, 2 replacement)` == 3) 

replaced <- SelectedStlls %>% 
  filter(RAN_SEL_STAT == "R")

NSNR <-  SelectedStlls %>% 
  filter(RAN_SEL_STAT == "NS-NR") 

TargetQuads <-SelectedStlls %>% 
  filter(RAN_SEL_STAT != "R") 

In total 6182 images were potentially targeted for annotation, of these 5495 have been annotated for percent cover of substrate types, 3787 have been annotated for VME taxa and 129 were identified as unsuitable for annotation and could not be replaced; in total 2759 of the original selected images were replaced through our ‘gapfilling’ protocol. Summary of the number of images targeted for stills analyses and the number of images annotated for percent cover and for VME taxa. (NOTE need to exclude operations that were not targeted from this summary)

PC_done <- PCcoverbyImage %>% 
  group_by(SVY_OPS) %>% 
  summarise(PCdone=n())

VME_done <- VMEannoMatrix %>% 
  group_by(SVY_OPS) %>% 
  summarise(VMEdone=n())

NSNR_ops <-  NSNR %>% 
  group_by(SVY_OPS) %>% 
  summarise(NR= n())

## NOTE will need to limit the data here to target ops only
Target <- AllSTills %>% 
  group_by(SVY_OPS, MapLoc, `Target RANSMPL (1/10)`) %>% 
  filter(`Selection round (1 orig sel, 2 replacement)` == 1 |
           `Selection round (1 orig sel, 2 replacement)` == 2 |
           `Selection round (1 orig sel, 2 replacement)` == 3) %>%
  filter(RAN_SEL_STAT != "R") %>% 
  summarise(Selected = n()) %>% 
  left_join(PC_done, by=c("SVY_OPS"="SVY_OPS")) %>% 
  left_join(VME_done, by=c("SVY_OPS"="SVY_OPS")) %>%
  left_join(NSNR_ops, by=c("SVY_OPS"="SVY_OPS"))


#tried to call this in text xxx with `r view(nTarget)` but doesn't work

kable(Target[1:7], caption="By operation processing summary")
Table 4.1: By operation processing summary
SVY_OPS MapLoc Target RANSMPL (1/10) Selected PCdone VMEdone NR
IN2018_V06_012 Hill U 27 49 38 38 11
IN2018_V06_013 Hill U 22 39 37 37 2
IN2018_V06_014 Hill U 17 32 20 20 12
IN2018_V06_015 Pedra 53 95 94 94 1
IN2018_V06_021 z16 18 38 32 34 4
IN2018_V06_022 Pedra 21 51 50 50 1
IN2018_V06_024 z16 41 44 35 35 6
IN2018_V06_025 Pedra 63 63 51 40 NA
IN2018_V06_026 Mongrel 64 64 36 36 2
IN2018_V06_027 Pedra 95 97 94 40 4
IN2018_V06_029 Mongrel 59 59 26 26 NA
IN2018_V06_031 Hill U 41 42 41 32 NA
IN2018_V06_032 Hill U 55 54 51 36 1
IN2018_V06_040 Pedra 80 80 78 50 NA
IN2018_V06_041 z16 50 50 48 30 2
IN2018_V06_042 Sisters 81 81 81 60 NA
IN2018_V06_043 Sisters 83 83 81 50 2
IN2018_V06_044 Sisters 72 71 96 46 NA
IN2018_V06_045 Hill K1 44 45 43 37 1
IN2018_V06_046 Sisters 67 67 63 43 4
IN2018_V06_051 Hill K1 80 82 70 44 11
IN2018_V06_052 Hill K1 48 50 46 29 1
IN2018_V06_053 Hill K1 57 66 44 30 14
IN2018_V06_054 Hill K1 48 55 46 22 2
IN2018_V06_055 Hill K1 60 72 59 36 1
IN2018_V06_056 Sisters 70 70 69 41 1
IN2018_V06_057 Sisters 67 67 61 33 6
IN2018_V06_059 Sisters 56 56 55 36 NA
IN2018_V06_060 Little Sister (z56) 38 39 37 25 1
IN2018_V06_061 Hill U 38 38 37 23 NA
IN2018_V06_062 z16 39 39 39 25 NA
IN2018_V06_063 z16 43 43 46 31 NA
IN2018_V06_064 z16 37 37 32 20 1
IN2018_V06_067 Sisters 63 63 63 23 NA
IN2018_V06_068 Hill K1 45 50 42 6 2
IN2018_V06_075 Main Matt 66 66 65 51 1
IN2018_V06_080 Fang 25 25 24 NA NA
IN2018_V06_081 Sisters 57 57 57 29 NA
IN2018_V06_082 Hill K1 41 41 41 31 NA
IN2018_V06_083 Main Matt 83 83 83 67 NA
IN2018_V06_084 Main Matt 81 81 80 65 NA
IN2018_V06_085 Main Matt 75 75 73 56 1
IN2018_V06_088 Main Matt 79 79 79 60 NA
IN2018_V06_089 Main Matt 69 69 69 57 NA
IN2018_V06_090 slope 36 36 36 34 NA
IN2018_V06_091 Main Matt 95 95 94 79 NA
IN2018_V06_092 Main Matt 66 69 69 51 NA
IN2018_V06_093 Fang 20 20 19 11 1
IN2018_V06_095 z99 66 67 65 47 NA
IN2018_V06_097 Main Matt 64 64 63 48 NA
IN2018_V06_098 z110 74 74 70 37 3
IN2018_V06_099 slope 76 76 66 42 NA
IN2018_V06_100 slope 59 59 60 26 NA
IN2018_V06_101 slope 66 66 66 NA NA
IN2018_V06_103 slope 60 60 33 33 NA
IN2018_V06_104 slope 17 17 NA 9 NA
IN2018_V06_106 slope 61 60 23 21 NA
IN2018_V06_107 slope 15 15 9 9 NA
IN2018_V06_108 slope 59 59 54 34 NA
IN2018_V06_109 slope 69 69 60 35 3
IN2018_V06_110 Pedra 54 54 31 34 NA
IN2018_V06_113 z16 33 31 33 28 NA
IN2018_V06_114 z16 35 35 35 30 NA
IN2018_V06_116 Hill U 83 84 80 49 3
IN2018_V06_117 Hill U 34 34 33 16 1
IN2018_V06_118 z34 44 44 26 16 NA
IN2018_V06_119 z20 24 24 12 9 NA
IN2018_V06_120 slope 51 51 20 20 NA
IN2018_V06_121 Belinda’s Dory Hill 18 18 7 6 1
IN2018_V06_122 z103 64 64 27 22 NA
IN2018_V06_123 Hill V 34 34 13 12 NA
IN2018_V06_125 z16 36 36 34 31 1
IN2018_V06_127 z4 46 52 49 35 3
IN2018_V06_128 Punch’s Hill 22 23 22 15 1
IN2018_V06_129 slope 62 62 21 21 NA
IN2018_V06_130 slope 63 63 60 35 1
IN2018_V06_131 Andy’s 33 33 13 11 NA
IN2018_V06_133 slope 63 63 34 34 NA
IN2018_V06_134 slope 69 69 28 28 NA
IN2018_V06_136 slope 70 70 69 17 1
IN2018_V06_137 Patience 20 20 NA NA NA
IN2018_V06_138 slope 40 40 37 NA NA
IN2018_V06_145 z77 70 70 69 46 1
IN2018_V06_146 z5 72 72 71 28 NA
IN2018_V06_147 New 1 57 57 53 35 2
IN2018_V06_148 z96 12 12 10 8 2
IN2018_V06_150 Atoll 78 77 76 32 NA
IN2018_V06_151 z12 47 47 46 25 NA
IN2018_V06_152 z70 31 31 30 12 1
IN2018_V06_154 slope 45 45 41 24 4
IN2018_V06_155 Punch’s Hill 30 30 30 22 NA
IN2018_V06_156 Corvina group N 30 30 29 18 NA
IN2018_V06_158 z53 75 75 73 49 NA
IN2018_V06_161 z44 33 33 32 27 NA
IN2018_V06_162 Patience 51 51 46 37 1
IN2018_V06_164 z91 25 25 24 14 NA
IN2018_V06_165 z24 33 33 32 26 1
IN2018_V06_166 z8 70 70 67 49 3
IN2018_V06_167 Punch’s Hill 51 51 51 42 NA
IN2018_V06_168 z4 37 37 36 13 NA
IN2018_V06_172 St Helens 79 79 76 76 NA
IN2018_V06_174 St Helens 77 77 75 74 NA
IN2018_V06_176 St Helens 66 66 60 59 NA
IN2018_V06_177 St Helens 68 68 65 66 NA
IN2018_V06_179 St Helens 70 70 70 69 NA
IN2018_V06_181 St Helens (E) 39 39 37 NA NA
IN2018_V06_182 St Helens 66 66 66 65 NA
IN2018_V06_185 St Helens 71 71 71 71 NA
IN2018_V06_186 St Helens 66 66 63 63 NA
IN2018_V06_187 Paddys Head 56 56 55 NA NA
IN2018_V06_188 Paddys Head (E) 35 35 33 NA NA
IN2018_V06_189 Freycinet Canyon 45 45 45 NA NA
IN2018_V06_190 Reidle Hill 81 81 80 76 NA
The depth distrib ution of the data set
PCcoverbyImage %>% 
  ggplot(aes(x = depth)) +
  facet_wrap(~ MapLoc) +
  geom_histogram(bins=10)
depth distribution of the annotated imagery

Figure 4.1: depth distribution of the annotated imagery

4.1 1. Percent cover

In total there are 5495 randomly selected images have been annotated for percent cover to date. In total 111 operations have been (at least partially) annotated.

Below is a summary of the data distribution across the targeted substrate types

# check out the substrate codes that were annotated

PCsum <- PC_cover %>% 
  group_by(L2_Code) %>% 
  summarise(meanPCcover= mean(PC_cover), PresNo_Images = n())

kable(PCsum [1:3], caption="Summary of the data distribution across the targeted substrate types")
Table 4.2: Summary of the data distribution across the targeted substrate types
L2_Code meanPCcover PresNo_Images
NS 6.132406 119
SC-ENLP 9.975092 9
SC-MAD 7.459777 4
SC-SOL 12.985413 414
SU-BBAR 22.360422 180
SU-BCOR 32.937193 1348
SU-BOL 13.546613 192
SU-BOTH 27.555998 1251
SU-COB 8.886730 118
SU-CONBIO 28.497632 1928
SU-ENLP 12.801383 9
SU-MAD 4.918033 1
SU-PEBGRAV 53.250480 1155
SU-ROK 71.675359 2337
SU-SAMU 44.502566 2225
SU-SOL 61.931814 1189

The depth distribution of the live and dead coral matrix are of particular interest in looking at the depth distribution of the substrate types.

#distribution of the substrate types
# create a vector with the sequence of the substrate types for ordering them in a meaningful way
SubstSeq <- c('SC-ENLP',
              'SU-ENLP',
              'SC-SOL',
              'SU-SOL',
              'SC-MAD',
              'SU-MAD',
              'SU-BCOR',
              'SU-BBAR',
              'SU-BOTH',
              'SU-ROK',
              'SU-BOL',
              'SU-COB',
              'SU-CONBIO',
              'SU-PEBGRAV',
              'SU-SAMU',
              'NS')
# create a unique colour scheme for substrate types
SubstCol <- c('SC-ENLP' = "yellow",
              'SU-ENLP'= "yellow3",
              'SC-SOL'= "deeppink",
              'SU-SOL'="hotpink1",
              'SC-MAD'= "darkorchid1",
              'SU-MAD' = "darkorchid4",
              'SU-BCOR' = "orange",
              'SU-BBAR' = "orange3",
              'SU-BOTH' = "orange4",
              'SU-ROK' = "blue",
              'SU-BOL' = "dodgerblue",
              'SU-COB' = "dodgerblue3",
              'SU-CONBIO' = "cyan3",
              'SU-PEBGRAV'= "cyan",
              'SU-SAMU' = "palegreen",
              'NS' = "black")
ggplot(PC_cover,
       mapping= aes(x=factor(L2_Code, level =SubstSeq),              #call the pre existing vector
                    y=depth,
                    size=PC_cover,
                    colour=L2_Code)
  )+
  geom_point(alpha=0.2)+
  scale_y_reverse() +                            # reverse y-axis because it represents ocean depth 
  theme(axis.text.x = element_text(angle = 90))+   # rotate the label on x-axis
  labs(x="substrate type", y="depth")+
  scale_colour_manual(values=SubstCol)+
  theme(legend.text = element_text (size=7))+
  theme(legend.position = 'bottom')
Depth distribution of substrate types summary graph

Figure 4.2: Depth distribution of substrate types summary graph

Coral rubble appears to have quite a high concentratio in the shallowest depths, scattering the raw data may make this easier to see:

PC_cover %>% 
  ggplot(aes(x = depth,
             y = PC_cover))+
  geom_point(alpha=0.2)+
  facet_wrap(~L2_Code)
Depth distribution of substrate types

Figure 4.3: Depth distribution of substrate types

Distribution of the substrate types by selected locations - here the seamounts from the recovery time series are selected.

# currentl the pie graphs are not run for the knittin...
PC_cover %>% 
  group_by(MapLoc, L2_Code) %>% 
  summarise(totPC = sum(PC_cover)) %>% 
  ungroup() %>% 
  group_by(MapLoc) %>% 
  mutate(PCPC = (100*totPC/sum(totPC))) %>% 
  ggplot(
       mapping= aes(x="", 
                    y=PCPC,               
                    fill=factor(L2_Code, level =SubstSeq)
       ))+
    geom_bar(stat="identity", width=1)+
    coord_polar("y", start=0)+
  scale_fill_manual(values=SubstCol)+
  theme(legend.position = 'bottom')+
  facet_wrap(~MapLoc, ncol = 5)
Pie charts of substrate distribution by locations, using the colour scheme identified above

Figure 4.4: Pie charts of substrate distribution by locations, using the colour scheme identified above

Figure 2 above shows a relatively narrow depth band where Solenosmilia (particulaly live coral) is observed, and a surprisingly high contribution of coral rubble in the shallowest images. Looking at the distribution of coral matrix formed by Solenosmilia (SC_SOL and SU_SOL) and coral rubble (SU_BCOR) in more detail, particularly by depth and location.

CoralPC <- PC_cover %>% 
  filter(L2_Code == "SC-SOL" |
         L2_Code == "SU-SOL" |
        L2_Code == "SU-BCOR"  )

CoralPC %>% 
  ggplot(aes(x = PC_cover)) +
  facet_wrap(~ L2_Code) +
  geom_histogram()
Frequency distrbution histograms of % cover recorded for coral matrix and rubble

Figure 4.5: Frequency distrbution histograms of % cover recorded for coral matrix and rubble

Just concentrating on the Coral rubble, why is there a high proportion of rubble in shallow sites

PC_cover %>% 
  filter(L2_Code == "SU-BCOR") %>% 
  ggplot(aes(x = depth,
             y = PC_cover))+
  geom_point(alpha=0.2)+
  facet_wrap(~MapLoc)
Distribution of coral rubble by seamount location

Figure 4.6: Distribution of coral rubble by seamount location

4.2 2. VME taxa

In total there are 3787 randomly selected images have been annotated for the density of VME taxa to date. In total 106 operations have been (at least partially) annotated.

# looking at the distribution of density and number of taxa over the whole data set
VME_TotDens <- VMEanno_DensQ %>% 
  #filter(CONCEPT != "No-VMEfauna") %>% 
  group_by(image_key, SVY_OPS, MapLoc, depth) %>% 
  summarise(TotDens=sum(Dens),
            noTaxa=sum(NoTypes)) 

TotVME_dens <- VME_TotDens %>% 
  ggplot(aes(x=TotDens))+
  geom_histogram()

# number of Taxa 
TotVMEtax <- VME_TotDens %>% 
  ggplot(aes(x=noTaxa))+
  geom_histogram()  

# combine plots into a 2 panel figure
plot_grid(TotVMEtax, TotVME_dens) 
*Frequency distribution of a) total density of VME data and b) total number of taxa

Figure 4.7: *Frequency distribution of a) total density of VME data and b) total number of taxa

Instead of total density only use the totals for actual VME taxa (excluding urchins,)

# looking at the distribution of density and number of taxa over the whole data set
VMEonly_TotDens <- VMEanno_DensQ %>% 
  filter( CONCEPT == "Black & Octocorals" |
                  CONCEPT == "Brisingid"  |
                  #CONCEPT == "D.horridus",
                  CONCEPT == "Enallopsammia"  |
                  #CONCEPT == "Hydrocorals"  |
                  CONCEPT == "Hydrocorals: Branching"  |
                  #CONCEPT == "Irregular urchins"  |
                  CONCEPT == "Madrepora"  |
                  #CONCEPT == "No-VMEfauna",
                  #CONCEPT == "Regular urchins"  |
                  CONCEPT == "S.variabilis"  |
                  CONCEPT == "Sponges"  |
                  CONCEPT == "Stalked crinoids"  |
                  CONCEPT == "Stony corals",
                  #CONCEPT == "True anemones: Fourlobed"  |
                  #CONCEPT == "Unstalked crinoids"
          )%>% 
  group_by(image_key, SVY_OPS, MapLoc, depth) %>% 
  summarise(VMEtaxaDens=sum(Dens))

VMEonly_TotDens %>% 
  ggplot(aes(x = VMEtaxaDens))+
  geom_histogram()
**Frequency distribution of total density of VME taxa only

Figure 4.8: **Frequency distribution of total density of VME taxa only

4.3 Combined substrate and VME taxa data

Combining the totals of the VME taxa annotations with the percent cover annotations allows us to examine correlations between Total VME fauna density and substrate types.

# excluded for now 
# looking at some summary stats

#temporary table: add summary of total density, number of taxa and tot density VME taxa to densities of separated VME taxa
  
 TVME <- VMEannoMatrix %>% 
  select(image_key,
         `Black & Octocorals`,
         `Brisingid`,
         `D.horridus`,
         `Enallopsammia`,
         `Hydrocorals`,
         `Hydrocorals: Branching`,
         `Irregular urchins`,
         `Madrepora`,
         `No-VMEfauna`,
         `Regular urchins`,
         `S.variabilis`,
         `Sponges`,
         `Stalked crinoids`,
         `Stony corals`,
         `True anemones: Fourlobed`,
         `Unstalked crinoids`,
         PC_Sub_CoralReef,
         PC_EnallopMatrix,
         PC_SolMatrix) %>% 
  left_join(VMEonly_TotDens, by=c("image_key"="image_key")) %>% 
  left_join(VME_TotDens, by=c("image_key"="image_key")) %>% 
  select(-MapLoc.y, -depth.y, -SVY_OPS.y)


# select out the Percent cover values from PC_Matrix and add this to the table above

VME_AnnoAll <- PCcoverbyImage %>% 
  select(image_key,
         'SC-ENLP',
         'SU-ENLP',
         'SC-SOL',
         'SU-SOL',
         'SC-MAD',
         'SU-MAD',
         'SU-BCOR',
         'SU-BBAR',
         'SU-BOTH',
         'SU-ROK',
         'SU-BOL',
         'SU-COB',
         'SU-CONBIO',
         'SU-PEBGRAV',
         'SU-SAMU',
         'NS',
         'OV_CD',
         'OV_group',
         'OV_CAT') %>% 
  left_join(TVME, by=c("image_key"="image_key"))

#Reading out the data table is commented out
#kable(VME_AnnoAll [1:42], caption="**Table 3** Combined data matrix (by image) of percent substrate types and VME taxon densities, including the summaries of densities")

# summarising these data by operation to see if the differences average out

Reef_transectSummary <-  VME_AnnoAll %>% 
 filter(!is.na(`PC_SolMatrix`)) %>%   
 mutate(PCsol = (`SC-SOL`+`SU-SOL`),
         GPCsol = (`PC_SolMatrix`),
         PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
         GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`)) %>% 
  select(SVY_OPS.x, MapLoc.x, image_key, PCsol, GPCsol, PCreef,  GPCreef) %>% 
  group_by(SVY_OPS.x, MapLoc.x) %>%
  summarise(VMEdone=n(),
            PCSol = sum(PCsol),
            PCReef = sum(PCreef),
            GSol = sum(GPCsol),
            GReef = sum(GPCreef)) %>% 
  mutate(AVPCSol = (PCSol / VMEdone)) %>% 
  mutate(AVGSol = (GSol / VMEdone)) %>% 
  mutate(AVPCReef = (PCReef / VMEdone)) %>% 
  mutate(AVGReef = (GReef / VMEdone))

4.3.1 Ckecks of matrix point scores vs. matrix estimates

Checking how well the estimated percent cover of coral matrix matches with measured percent cover of coral matrix (dead & alive)

VME_AnnoAll %>% 
  ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`), 
                     y= PC_SolMatrix))+
   geom_point() 
Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation

Figure 4.9: Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation

Reef_transectSummary %>% 
  ggplot(mapping = aes(x= AVPCSol, 
                       y= AVGSol,
                       colour = MapLoc.x))+
  geom_point()
Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation

Figure 4.10: Comparison of estimated and measured percent cover of Solenosmilia matrix for raw data and for averages by operation

#+ geom_text(aes(label=SVY_OPS.x))

A linear regression of these data shows the following

TempLM <- VME_AnnoAll %>% 
  mutate(PCsol = (`SC-SOL`+`SU-SOL`),
         GPCsol = (`PC_SolMatrix`),
         PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
         GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`))
Linear_SOLmatrix <-  lm(GPCsol ~ PCsol, data=TempLM)

#Longer summary of the model
summary(Linear_SOLmatrix)
## 
## Call:
## lm(formula = GPCsol ~ PCsol, data = TempLM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -78.768   0.322   0.322   0.322 100.322 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.321704   0.181363  -1.774   0.0762 .  
## PCsol        0.800900   0.005372 149.092   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.26 on 3779 degrees of freedom
##   (1714 observations deleted due to missingness)
## Multiple R-squared:  0.8547, Adjusted R-squared:  0.8547 
## F-statistic: 2.223e+04 on 1 and 3779 DF,  p-value: < 2.2e-16

Looking at the combined reef categories:

VME_AnnoAll %>% 
  ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`), 
                     y= (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`)))+
   geom_point()
Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation

Figure 4.11: Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation

Reef_transectSummary %>% 
  ggplot(mapping = aes(x= AVPCReef, 
                       y= AVGReef,
                       colour = MapLoc.x))+
  geom_point()
Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation

Figure 4.12: Comparison of estimated and measured percent cover of all types of coral matrix for raw data and for averages by operation

#+ geom_text(aes(label=SVY_OPS.x))

A linear regression of these data shows the following:

TempLM <- VME_AnnoAll %>% 
  mutate(PCreef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
         GPCreef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`))
Linear_REEF <-  lm(GPCreef ~ PCreef, data=TempLM)

#Longer summary of the model
summary(Linear_REEF)
## 
## Call:
## lm(formula = GPCreef ~ PCreef, data = TempLM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -79.241   0.281   0.281   0.281 100.281 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.281392   0.179458  -1.568    0.117    
## PCreef       0.805220   0.005308 151.697   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.15 on 3779 degrees of freedom
##   (1714 observations deleted due to missingness)
## Multiple R-squared:  0.8589, Adjusted R-squared:  0.8589 
## F-statistic: 2.301e+04 on 1 and 3779 DF,  p-value: < 2.2e-16

Considering the relationship of the number of live heads counted versus the percent cover by live Solenosmilia there appears to be a much better fit.

VME_AnnoAll %>% 
  ggplot(mapping = aes(x= (`SC-SOL`), 
                       y= S.variabilis))+
  geom_point() +
  geom_smooth(method = "lm", se = TRUE)
Comparison of density of live solenosmilia heads and measured percent cover of live Solenosmilia, with a smoothed linear regression line

Figure 4.13: Comparison of density of live solenosmilia heads and measured percent cover of live Solenosmilia, with a smoothed linear regression line

A linear regression of these data:

# linear regression of head count vs pc cover live
Linear_SOL_live <- lm(`S.variabilis` ~ (`SC-SOL`), data = VME_AnnoAll)

#Longer summary of the model
summary(Linear_SOL_live)
## 
## Call:
## lm(formula = S.variabilis ~ (`SC-SOL`), data = VME_AnnoAll)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2717 -0.0357 -0.0357 -0.0357  8.6611 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.035653   0.005629   6.333 2.68e-10 ***
## `SC-SOL`    0.089730   0.001270  70.644  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3394 on 3779 degrees of freedom
##   (1714 observations deleted due to missingness)
## Multiple R-squared:  0.5691, Adjusted R-squared:  0.569 
## F-statistic:  4991 on 1 and 3779 DF,  p-value: < 2.2e-16

Checking of the data where the difference between estimates and PC point scores are greater than 25% resulted in the identification of some data entry errors which were corrected. The remaining differences stem from two main sources:

  1. Point counts appeared to overall result in higher percent cover than by-eye estimates, especiallty where there were relatively small sandy patches beween matrix, the points appear to fall preferentially on matrix, despite the fact that points were randomly placed in images but

  2. Images with ‘Low matrix’ according to the impacts overview scores, especially where it was sediment filled or shaved, and ‘shaved rubble’ had high differences i percent cover of reef between the point scores the by-eye estimates.

T1 <- VME_AnnoAll %>% 
  mutate(point_reef = (`SC-SOL`+`SU-SOL`+ `SC-ENLP`+ `SU-ENLP`+ `SC-MAD` + `SU-MAD`),
         point_sol = (`SC-SOL`+`SU-SOL`),
         guess_reef = (`PC_SolMatrix` + `PC_Sub_CoralReef` + `PC_EnallopMatrix`),
         guess_sol = (`PC_SolMatrix`)) %>% 
  mutate(diff_reef = (`point_reef` - `guess_reef`),
         diff_sol = (`point_sol` - `guess_sol`)) 
T2 <- T1 %>% 
  filter(abs(diff_reef) > 25 |
           abs(diff_sol) > 25  ) #%>% 
  #left_join(PtsPerImage, by=c("image_key" ="image_key")) 
  
  
#write_csv(T2, "Results/CheckpcReef.csv")


CheckReef1 <-  T1 %>% 
  filter(!is.na(guess_reef)) %>% 
  group_by(OV_group, OV_CAT, OV_CD) %>% 
  summarise(count = n(),
            avpreef = mean(point_reef),
            avgreef = mean(guess_reef),
            avDifreef = mean(diff_reef)) %>% 
  arrange(avDifreef)

 kable(CheckReef1, caption="overview categories scored")
Table 4.3: overview categories scored
OV_group OV_CAT OV_CD count avpreef avgreef avDifreef
Rubble HighAb - with clumps - live RhCL 1 0.0000000 1.0000000 -1.0000000
Rubble MedAb - with clumps - dead RmCD 222 0.6715101 1.5720721 -0.9005620
Rubble Isolated fragments/ clumps RIC 162 0.0596565 0.7654321 -0.7057756
Rubble LowAb - with clumps RlC 26 0.0000000 0.0384615 -0.0384615
Rubble LowAb - no clumps RlNC 78 0.0000000 0.0128205 -0.0128205
Other No rubble or matrix OTHER 1786 0.0000000 0.0067189 -0.0067189
Rubble HighAb - with clumps - dead RhCD 36 3.3623682 3.3611111 0.0012571
Rubble MedAb Rm 350 0.2178611 0.0400000 0.1778611
Rubble HighAb - no other RhNOth 63 0.5380117 0.0952381 0.4427736
Rubble HighAb - with other RhO 270 0.8434476 0.1111111 0.7323365
Rubble MedAb - with clumps - live RmCL 3 6.2034739 5.0000000 1.2034739
Rubble MedAb - with patch - live RmPL 8 7.0000000 4.3750000 2.6250000
Rubble MedAb - with patch - dead RmPD 20 6.7198175 3.7000000 3.0198175
Matrix High - reef MHReef 277 84.2338183 79.6678700 4.5659483
Rubble HighAb - with patch - live RhPL 8 20.7683271 13.7500000 7.0183271
Matrix High - shaved MHS 92 90.1315645 79.1521739 10.9793906
Rubble Shaved RS 35 21.0296728 9.6857143 11.3439585
Matrix Low - with patch - dead MLPD 8 24.3647940 10.3750000 13.9897940
Matrix Low - with clumps - dead MLCD 46 31.7318205 15.3260870 16.4057335
Matrix Low - sediment filled MLSed 139 36.8736416 15.5827338 21.2909078
Matrix Low - with patch - live MLPL 32 58.7453401 36.1562500 22.5890901
NA NA NA 3 88.0237301 62.6666667 25.3570634
Rubble HighAb - with patch - dead RhPD 3 28.9147810 1.0000000 27.9147810
Matrix Low - shaved MLS 109 68.2922344 39.3761468 28.9160876
Matrix Low - with clumps - live MLCL 4 86.4194205 36.2500000 50.1694205

###Distribution of VME taxa over coral matrix percent by points

The distribution of VME taxa over coral matrix substrates are graphed below.

VMEanno_DensQ %>% 
  left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>% 
  filter((`SC-SOL`+`SU-SOL`) != 0) %>% 
    ggplot(mapping = aes(x= (`SC-SOL`+`SU-SOL`), 
                     y= Dens
                     ))+
   geom_point()+
  labs(x="% cover coral matrix (dead and alive)", y="density of VME taxa (ind./m2)")+
  facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Relationship between density of VME taxa and percent cover of dead & alive matrix forming coral

Figure 4.14: Relationship between density of VME taxa and percent cover of dead & alive matrix forming coral

VMEanno_DensQ %>% 
  left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>% 
  filter((`SC-SOL`) != 0) %>% 
    ggplot(mapping = aes(x= (`SC-SOL`), 
                     y= Dens
                     ))+
   geom_point()+
  labs(x="% cover live Solenosmilia)", y="density of VME taxa (ind./m2)")+
  facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Relationship between density of VME taxa and percent cover of live Solenosmila

Figure 4.15: Relationship between density of VME taxa and percent cover of live Solenosmila

VMEanno_DensQ %>% 
  left_join(PCcoverbyImage, by=c("image_key"="image_key")) %>% 
  filter((`SU-SOL`) != 0) %>% 
    ggplot(mapping = aes(x= (`SU-SOL`), 
                     y= Dens
                     ))+
   geom_point()+
  labs(x="% cover dead Solenosmilia)", y="density of VME taxa (ind./m2)")+
  facet_wrap(~CONCEPT, ncol=4, scales = "free_y")
Relationship between density of VME taxa and percent cover of dead Solenosmila

Figure 4.16: Relationship between density of VME taxa and percent cover of dead Solenosmila

4.4 Impacts - overview dta from PC cover analyses

Looking into the overview scores of potential gear impacts for still images is done in a separate Markdown file.